package com.kukudb.captcharepeater.controller;

import com.kukudb.captcharepeater.pojo.Promoters;
import com.kukudb.captcharepeater.pojo.ResponseMessage;
import com.kukudb.captcharepeater.pojo.Users;
import com.kukudb.captcharepeater.serveice.AdminServericeImpl;
import com.kukudb.captcharepeater.utils.JWTUtils;
import jakarta.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/admin")    // localhost:81/api/user
@Slf4j
public class AdminControllerApi {
@Autowired
AdminServericeImpl adminServerice;

    @GetMapping("/getUserList")

    public ResponseMessage<List<Users>> getUserList(HttpSession session) {
        log.info("getUserList----------");

        log.info("session----------{}",session);
        Integer userId = JWTUtils.getSessionUserId(session);
        log.info("userId----------{}",userId);
        if (adminServerice.isAdmin(userId)) {
            //如果是管理员的话获取全部信息
            log.info("如果是管理员的话获取自己的信息userid：{}",userId);
            return adminServerice.getUserList();
        }
        else {
            //如果不是管理员的话获取自己的信息
            log.info("如果不是管理员的话获取自己的信息userid：{}",userId);
            return adminServerice.getUserList(userId);
        }
    }
    @PostMapping("/setIsSuccess")
    public ResponseMessage<String> setIsSuccess(@RequestBody Users  users,HttpSession session) {
        log.info("setIsSuccess----------{}",users);
        log.info("session----------{}",session);
        Integer userId = JWTUtils.getSessionUserId(session);
        log.info("userId----------{}",userId);
        if (adminServerice.isAdmin(userId)) {
            //如果是管理员的话获取全部信息
            log.info("如果是管理员的话获取自己的信息userid：{}",userId);
            return adminServerice.setIsSuccess(users);
        }
        else {
            //如果不是管理员的话获取自己的信息
            log.info("如果不是管理员的话获取自己的信息userid：{},判断是不是自己推广的",userId);
            //
            return adminServerice.setIsSuccess(users,userId);
        }

//        return adminServerice.setIsSuccess(users);
    }

    @PostMapping("/deleteUsers")
    //删除用户
    public ResponseMessage<String> deleteUsers(@RequestBody Users  users,HttpSession session) {
        log.info("session----------{}",session);
        Integer userId = JWTUtils.getSessionUserId(session);
        log.info("userId----------{}",userId);
        if (adminServerice.isAdmin(userId)) {
            //如果是管理员的话获取全部信息
            log.info("如果是管理员的话获取自己的信息userid：{}",userId);
            return adminServerice.deleteUsers(users);
        }
        else {
            //如果不是管理员的话获取自己的信息
            log.info("如果不是管理员的话获取自己的信息userid：{},判断是不是自己推广的",userId);
            return adminServerice.deleteUsers(userId,users);
        }
//        return adminServerice.deleteUsers(users);
    }
    //添加推广员
    @PostMapping("/addPromoter")
    public ResponseMessage<String> addPromoter(@RequestBody Promoters promoters,HttpSession session) {
        log.info("addPromoter----------{}",promoters);
        log.info("session----------{}",session);
        Integer userId = JWTUtils.getSessionUserId(session);
        log.info("userId----------{}",userId);
        if (adminServerice.isAdmin(userId)) {
            //如果是管理员的话获取全部信息
            log.info("如果是管理员的话获取自己的信息userid：{}",userId);
            return adminServerice.addPromoter(promoters);
        }
        throw new RuntimeException("没有权限");

    }


    //修改推广员
    @PostMapping("/updatePromoter")
    public ResponseMessage<String> updatePromoter(@RequestBody Promoters promoters,HttpSession session) {
        log.info("updatePromoter----------{}",promoters);
        log.info("session----------{}",session);
        Integer userId = JWTUtils.getSessionUserId(session);
        log.info("userId----------{}",userId);
        if (adminServerice.isAdmin(userId)) {
            //如果是管理员的话获取全部信息
            log.info("如果是管理员的话获取自己的信息userid：{}直接修改",userId);
            return adminServerice.updatePromoter(promoters);
        }else {
            log.info("如果不是管理员的话获取自己的信息userid：{},判断是不是自己推广的",userId);
            return adminServerice.updatePromoter(session,promoters);
        }
//        throw new RuntimeException("没有权限");
    }

    //删除推广员的接口
    @PostMapping("/deletePromoter")
    public ResponseMessage<String> deletePromoter(@RequestBody Promoters promoters,HttpSession session) {
        log.info("deletePromoter----------{}",promoters);
        log.info("session----------{}",session);
        Integer userId = JWTUtils.getSessionUserId(session);
        log.info("userId----------{}",userId);
        if (adminServerice.isAdmin(userId)) {
            //如果是管理员的话获取全部信息
            log.info("如果是管理员的话获取自己的信息userid：{}直接修改",userId);
            return adminServerice.deletePromoter(promoters);
        }

        throw new RuntimeException("没有权限");
    }

    //获取推广员列表
    @GetMapping("/getPromoterList")
    public ResponseMessage<List<Promoters>> getPromoterList(HttpSession session) {
        log.info("getPromoterList----------");
        log.info("session----------{}",session);
        Integer userId = JWTUtils.getSessionUserId(session);
        log.info("userId----------{}",userId);
        if (adminServerice.isAdmin(userId)) {
            //如果是管理员的话获取全部信息
            log.info("如果是管理员的话获取自己的信息userid：{}",userId);
            return adminServerice.getPromoterList();
        }
        throw new RuntimeException("没有权限");
    }




}
